package com.fan.share;

import android.content.Context;
import android.os.Build;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
import android.util.SparseLongArray;

import com.fan.share.entity.Share;
import com.fan.share.themes.OnekeyShare;

import java.lang.reflect.Array;
import java.util.Collection;
import java.util.Map;


/**
 * 分享功能
 *
 * @author fan
 * @date 2017/10/25
 */

public class ShareFunction {

    public static boolean showShare ( Share share, Context context ) {
        if ( share == null ) {
            return false;
        }
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();
        if ( !isEmpty( share.getTitle() ) ) {
            // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间等使用
            if ( isEmpty( share.getTitle() ) ) {
                oks.setTitle( context.getResources().getString( R.string.app_name ) );
            } else {
                oks.setTitle( share.getTitle() );
            }
            // text是分享文本，所有平台都需要这个字段
            if ( isEmpty( share.getContent() ) ) {
                oks.setText( "暂无数据" );
            } else {
                oks.setText( share.getContent() );
            }
        }
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        // oks.setImagePath ( mObjCmlUser.getPhone () );
        oks.setImageUrl( share.getThumb() );
//        if ( StringUtil.isNotEmpty( share.getUrl() ) ) {
        // url仅在微信（包括好友和朋友圈）中使用
        oks.setUrl( share.getUrl() );
//        }
        // 启动分享GUI
        oks.show( context );
        return true;
    }

    public static boolean showShare ( String platform, Share share, Context context ) {
        if ( share == null ) {
            return false;
        }
        OnekeyShare oks = new OnekeyShare();
        //指定分享的平台，如果为空，还是会调用九宫格的平台列表界面
        if ( platform != null ) {
            oks.setPlatform( platform );
        }
        //关闭sso授权
        oks.disableSSOWhenAuthorize();
        if ( !isEmpty( share.getTitle() ) ) {
            // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间等使用
            if ( isEmpty( share.getTitle() ) ) {
                oks.setTitle( context.getResources().getString( R.string.app_name ) );
            } else {
                oks.setTitle( share.getTitle() );
            }
            // text是分享文本，所有平台都需要这个字段
            if ( isEmpty( share.getContent() ) ) {
                oks.setText( "暂无数据" );
            } else {
                oks.setText( share.getContent() );
            }
        }
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        // oks.setImagePath ( mObjCmlUser.getPhone () );
        if ( !isEmpty( share.getThumb() ) ) {
            oks.setImageUrl( share.getThumb() );
        }
//        if ( StringUtil.isNotEmpty( share.getUrl() ) ) {
        // url仅在微信（包括好友和朋友圈）中使用
        if ( !isEmpty( share.getUrl() ) ) {
            oks.setUrl( share.getUrl() );
        }
//        }
        // 启动分享GUI
        oks.show( context );
        return true;
    }

    public static boolean showShare ( String title, String pic, String url, Context context ) {
        if ( isEmpty( title ) && isEmpty( pic ) && isEmpty( url ) ) {
            return false;
        }
        OnekeyShare oks = new OnekeyShare();
        //关闭sso授权
        oks.disableSSOWhenAuthorize();
        // title标题，印象笔记、邮箱、信息、微信、人人网和QQ空间等使用
        oks.setTitle( context.getResources().getString( R.string.app_name ) );
        // text是分享文本，所有平台都需要这个字段
        oks.setText( title );
        // imagePath是图片的本地路径，Linked-In以外的平台都支持此参数
        // oks.setImagePath ( mObjCmlUser.getPhone () );
        oks.setImageUrl( pic );
        // url仅在微信（包括好友和朋友圈）中使用
        oks.setUrl( url );
        // 启动分享GUI
        oks.show( context );
        return true;
    }

    /**
     * 判断对象是否为空
     *
     * @param obj 对象
     * @return {@code true}: 为空<br>{@code false}: 不为空
     */
    public static boolean isEmpty ( Object obj ) {
        if ( obj == null ) {
            return true;
        }
        if ( obj instanceof String && obj.toString().length() == 0 ) {
            return true;
        }
        if ( obj.getClass().isArray() && Array.getLength( obj ) == 0 ) {
            return true;
        }
        if ( obj instanceof Collection && ( (Collection) obj ).isEmpty() ) {
            return true;
        }
        if ( obj instanceof Map && ( (Map) obj ).isEmpty() ) {
            return true;
        }
        if ( obj instanceof SparseArray && ( (SparseArray) obj ).size() == 0 ) {
            return true;
        }
        if ( obj instanceof SparseBooleanArray && ( (SparseBooleanArray) obj ).size() == 0 ) {
            return true;
        }
        if ( obj instanceof SparseIntArray && ( (SparseIntArray) obj ).size() == 0 ) {
            return true;
        }
        if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2 ) {
            return obj instanceof SparseLongArray && ( (SparseLongArray) obj ).size() == 0;
        }
        return false;
    }

}
